package com.kaoshi.myweb.webtest.test;

public class Base {
	Base() {
		preProcess();
	}

	void preProcess() {
	}

	public static void main(String[] args) {
		Derived d = new Derived();
		System.out.println(d.whenAmISet);

	}

}

/*
 * 初始过程
 * 进入Derived 构造函数。
Derived 成员变量的内存被分配。
Base 构造函数被隐含调用。
Base 构造函数调用preProcess()。
Derived 的preProcess 设置whenAmISet 值为 “set in preProcess()”。
Derived 的成员变量初始化被调用。
执行Derived 构造函数体。


引用自：http://coolshell.cn/articles/1106.html
 */
class Derived extends Base {
	
	public Derived() {
		//以下不注释，则 输出 init
		//this.whenAmISet = "init";
	}
	
	public String whenAmISet = "set when declared";

	@Override
	void preProcess() {
		whenAmISet = "set in preProcess()";
	}
}
